#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
//void Test(void)
//{
//	char* str = (char*)malloc(100);
//	strcpy(str, "hello");
//	free(str);
//	if (str != NULL)
//	{
//		strcpy(str, "world");
//		printf(str);
//	}
//}
//int main()
//{
//	Test();
//	return 0;
//}

#include <stdlib.h>
void test1()
{
	int* ret1 = malloc(5 * sizeof(int));
	if (ret1 == NULL)
	{
		perror("malloc");
		return 1;
	}
	int i = 0;
	for (i = 0; i < 5; i++)
	{
		*(ret1 + i) = i + 1;
	}
	for (i = 0; i < 5; i++)
	{
		printf("%d ", ret1[i]);
	}
	free(ret1);
	ret1 = NULL;
}
void test2()
{
	int* ret2 = (int*)calloc(5, sizeof(int));
	if (ret2 == NULL)
	{
		perror("calloc");
			return 1;
	}
	int i = 0;
	for (i = 0; i < 5; i++)
	{
		printf("%d ", ret2[i]);
	}
	free(ret2);
	ret2 = NULL;

}
void test3()
{
	int* ret1 = malloc(5 * sizeof(int));
	if (ret1 == NULL)
	{
		perror("malloc");
		return 1;
	}
	int i = 0;
	for (i = 0; i < 5; i++)
	{
		*(ret1 + i) = i + 1;
	}
	int * a =(int *)realloc(ret1, 40);
	if (a != NULL)
	{
		ret1 = a;
	}
	for (i = 0; i < 10; i++)
	{
		*(ret1 + i) = i + 3;
	}
	for (i = 0; i < 10; i++)
	{
		printf("%d ", ret1[i]);
	}
	free(ret1);
	ret1 = NULL;
}
int main()
{
	/*test1();
	test2();*/
	test3();
	return 0;
}